﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Windows.Forms;

namespace Arthus
{
    class Preduzece
    {
        MySqlConnection konekcija;
        MySqlCommand komanda = new MySqlCommand();
        MySqlDataReader datareader = null;
        MySqlDataAdapter adapter = null;
        DataSet dataset = null;
        DataTable dataTable = null;

        Preduzece preduzeceObjekat = null;

        public int VratiIDPreduzecaNaOsnovuOznake(String oznakaPreduzeca)
        {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT PREDUZECEID FROM PREDUZECA WHERE PREDUZECEOZN='" + oznakaPreduzeca + "';";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    rezultat = (int)datareader.GetValue(0);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        } //vraca id preduzeca na osnovu unete oznake

        public void PopuniComboBox(ComboBox combobox)
        {
            combobox.Items.Clear();
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT PREDUZECEOZN FROM PREDUZECA;";
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                adapter.SelectCommand = komanda;
                adapter.Fill(dataTable);

                adapter.Dispose();
                konekcija.Close();

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    combobox.Items.Add(dataTable.Rows[i][0]);
                }
                combobox.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Dispose();
                adapter.Dispose();
                konekcija.Close();
            }
        } //punjenje comboBoxa stavkama iz Preduzeca

        public String VratiOznakuPreduzecaNaOsnovuID(int idPreduzeca) {
            String rezultat = "";
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT PREDUZECEOZN FROM PREDUZECA WHERE PREDUZECEID="+idPreduzeca+";";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    rezultat = (String)datareader.GetValue(0);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }

        private string VratiDiliNNaOsnovuCheckBoxA(CheckBox cb) {
            if (cb.Checked == true)
            {
                return "D";
            }
            else {
                return "N";
            }
        }

        private void PostaviCheckBoxNaOsnovuDiliN(CheckBox cb, string dn) {
            if (dn.Equals("D"))
            {
                cb.Checked = true;
            }
            else {
                cb.Checked = false;
            }
        }

        public void PopuniListBox(ListBox lb)
        {
            lb.Items.Clear();
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT PREDUZECEID, PREDUZECEOZN FROM PREDUZECA;";
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                adapter.SelectCommand = komanda;
                adapter.Fill(dataTable);

                adapter.Dispose();
                konekcija.Close();

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    lb.Items.Add(dataTable.Rows[i][0] + ". " + dataTable.Rows[i][1]);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Dispose();
                adapter.Dispose();
                konekcija.Close();
            }
        }

        public void PopuniKontroleNaOsnovuIdPreduzeca(int idPreduzeca, TextBox oznaka, TextBox naziv, TextBox naziv2, TextBox adresa, TextBox postanskiBroj, 
            TextBox mesto, TextBox telefon, TextBox FAX, TextBox maticniBroj, TextBox PIB, TextBox PDVbroj, TextBox sifraDelatnosti, CheckBox obveznikPDV, 
            TextBox www, TextBox eMail, TextBox MIR, TextBox MPD, TextBox MC, TextBox MC2, TextBox NPO, TextBox ISP, TextBox KMA, TextBox KMB, TextBox IMG)
        {
            try
            {
                Posjed tobj = new Posjed();
                Preduzece predObj = new Preduzece();
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT `PREDUZECEOZN`, `PREDUZECENA1`, `PREDUZECENA2`, `PREDUZECEADR`, `PREDUZECEPBR`, `PREDUZECEMES`, "
                    +" `PREDUZECETEL`, `PREDUZECEFAX`, `PREDUZECEMBR`, `PREDUZECEPIB`, `PREDUZECEPDV`, `PREDUZECESDL`, `PREDUZECEOBP`, `PREDUZECEWWW`, "
                    +" `PREDUZECEEML`, `PREDUZECEMIR`, `PREDUZECEMPD`, `PREDUZECEMC1`, `PREDUZECEMC2`, `PREDUZECENPO`, `PREDUZECEISP`, `PREDUZECEKMA`, "
                    +" `PREDUZECEKMB`, `PREDUZECEIMG` FROM `preduzeca` WHERE PREDUZECEID="+idPreduzeca+";";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    oznaka.Text = datareader.GetValue(0).ToString();
                    naziv.Text = datareader.GetValue(1).ToString();
                    naziv2.Text = datareader.GetValue(2).ToString();
                    adresa.Text = datareader.GetValue(3).ToString();
                    postanskiBroj.Text = datareader.GetValue(4).ToString();
                    mesto.Text = datareader.GetValue(5).ToString();
                    telefon.Text = datareader.GetValue(6).ToString();
                    FAX.Text = datareader.GetValue(7).ToString();
                    maticniBroj.Text = datareader.GetValue(8).ToString();
                    PIB.Text = datareader.GetValue(9).ToString();
                    PDVbroj.Text = datareader.GetValue(10).ToString();
                    sifraDelatnosti.Text = datareader.GetValue(11).ToString();
                    PostaviCheckBoxNaOsnovuDiliN(obveznikPDV, datareader.GetValue(12).ToString());
                    www.Text = datareader.GetValue(13).ToString();
                    eMail.Text = datareader.GetValue(14).ToString();
                    MIR.Text = datareader.GetValue(15).ToString();
                    MPD.Text = datareader.GetValue(16).ToString();
                    MC.Text = datareader.GetValue(17).ToString();
                    MC2.Text = datareader.GetValue(18).ToString();
                    NPO.Text = datareader.GetValue(19).ToString();
                    ISP.Text = datareader.GetValue(20).ToString();
                    KMA.Text = datareader.GetValue(21).ToString();
                    KMB.Text = datareader.GetValue(22).ToString();
                    IMG.Text = datareader.GetValue(23).ToString();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
        }

        public int VratiPovecanID()
        {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT MAX(PREDUZECEID) FROM PREDUZECA;";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = Convert.ToInt32(datareader.GetValue(0));
                rezultat++;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }

        public void DodajPreduzece(TextBox oznaka, TextBox naziv, TextBox naziv2, TextBox adresa, TextBox postanskiBroj,
            TextBox mesto, TextBox telefon, TextBox FAX, TextBox maticniBroj, TextBox PIB, TextBox PDVbroj, TextBox sifraDelatnosti, CheckBox obveznikPDV,
            TextBox www, TextBox eMail, TextBox MIR, TextBox MPD, TextBox MC, TextBox MC2, TextBox NPO, TextBox ISP, TextBox KMA, TextBox KMB, TextBox IMG)
        {
            try
            {
                preduzeceObjekat = new Preduzece();
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = string.Format("INSERT INTO `preduzeca`(`PREDUZECEID`, `PREDUZECEOZN`, `PREDUZECEOZX`, `PREDUZECENA1`, `PREDUZECENA2`, "
                    +" `PREDUZECEADR`, `PREDUZECEPBR`, `PREDUZECEMES`, `PREDUZECETEL`, `PREDUZECEFAX`, `PREDUZECEMBR`, `PREDUZECEPIB`, `PREDUZECEPDV`, "
                    +" `PREDUZECESDL`, `PREDUZECEOBP`, `PREDUZECEWWW`, `PREDUZECEEML`, `PREDUZECEMIR`, `PREDUZECEMPD`, `PREDUZECEMC1`, `PREDUZECEMC2`, "
                    +" `PREDUZECENPO`, `PREDUZECEISP`, `PREDUZECEKMA`, `PREDUZECEKMB`, `PREDUZECEIMG`) VALUES ("+preduzeceObjekat.VratiPovecanID()+",'"
                    + oznaka.Text + "','"+Razno.IzbrisiPojedineKaraktereIzStringa(oznaka.Text.Trim().ToUpper())+"','" + naziv.Text + "','" + naziv2.Text + "','"
                    +adresa.Text+"','"+postanskiBroj.Text+"','"+mesto.Text+"','"+telefon.Text+"','"+FAX.Text+"','"+maticniBroj.Text+"','"+PIB.Text+"','"
                    +PDVbroj.Text+"','"+sifraDelatnosti.Text+"','"+VratiDiliNNaOsnovuCheckBoxA(obveznikPDV)+"','"+www.Text+"','"+eMail.Text+"','"+MIR.Text+"','"+MPD.Text+"','"+MC.Text+"','"
                    +MC2.Text+"','"+NPO.Text+"','"+ISP.Text+"','"+KMA.Text+"','"+KMB.Text+"','"+IMG.Text+"')");
                int response = komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno dodato novo preduzeće!");
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Već postoji preduzeće sa takvom oznakom!");
            }
            catch (FormatException ex)
            {
                MessageBox.Show("Greška u formatu unosa! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void IzmeniPreduzece(int idPreduzeca, TextBox oznaka, TextBox naziv, TextBox naziv2, TextBox adresa, TextBox postanskiBroj,
            TextBox mesto, TextBox telefon, TextBox FAX, TextBox maticniBroj, TextBox PIB, TextBox PDVbroj, TextBox sifraDelatnosti, CheckBox obveznikPDV,
            TextBox www, TextBox eMail, TextBox MIR, TextBox MPD, TextBox MC, TextBox MC2, TextBox NPO, TextBox ISP, TextBox KMA, TextBox KMB, TextBox IMG)
        {
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = @"UPDATE `preduzeca` SET `PREDUZECEOZN`='"+oznaka.Text+"',`PREDUZECEOZX`='"
                    +Razno.IzbrisiPojedineKaraktereIzStringa(oznaka.Text.Trim().ToUpper())+"',`PREDUZECENA1`='"+naziv.Text+"',`PREDUZECENA2`='"
                    +naziv2.Text+"',`PREDUZECEADR`='"+adresa.Text+"',`PREDUZECEPBR`='"+postanskiBroj.Text+"',`PREDUZECEMES`='"+mesto.Text+"',`PREDUZECETEL`='"
                    +telefon.Text+"',`PREDUZECEFAX`='"+FAX.Text+"',`PREDUZECEMBR`='"+maticniBroj.Text+"',`PREDUZECEPIB`='"+PIB.Text+"',`PREDUZECEPDV`='"
                    +PDVbroj.Text+"',`PREDUZECESDL`='"+sifraDelatnosti.Text+"',`PREDUZECEOBP`='"+VratiDiliNNaOsnovuCheckBoxA(obveznikPDV)+"',`PREDUZECEWWW`='"
                    +www.Text+"',`PREDUZECEEML`='"+eMail.Text+"',`PREDUZECEMIR`='"+MIR.Text+"',`PREDUZECEMPD`='"+MPD.Text+"',`PREDUZECEMC1`='"
                    +MC.Text+"',`PREDUZECEMC2`='"+MC2.Text+"',`PREDUZECENPO`='"+NPO.Text+"',`PREDUZECEISP`='"+ISP.Text+"',`PREDUZECEKMA`='"
                    +KMA.Text+"',`PREDUZECEKMB`='"+KMB.Text+"',`PREDUZECEIMG`='"+IMG.Text+"' WHERE PREDUZECEID="+idPreduzeca+"";
                int response = komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno izmenjeno preduzeće!");
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Već postoji preduzeće sa takvom oznakom!");
            }
            catch (FormatException ex)
            {
                MessageBox.Show("Greška u formatu unosa! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void ObrisiPreduzece(int idPreduzeca)
        {
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "DELETE FROM `preduzeca` WHERE PREDUZECEID=" + idPreduzeca + ";";
                komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno obrisano preduzeće!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }
    }
}
